/**
 * 2010(c) Copyright Oceansoft Information System Co.,LTD. All rights reserved.
 * <p>
 * Compile: JDK 1.6+
 * <p>
 * 版权所有(C)：江苏欧索软件有限公司
 * <p>
 * 公司名称：江苏欧索软件有限公司
 * <p>
 * 公司地址：中国苏州科技城青山路1号
 * <p>
 * 网址: http://www.oceansoft.com.cn
 * <p>
 * 作者: 090922(陈伟)
 * <p>
 * 文件名: com.oceansoft.mobile.econsole.common.util.FormData.java 
 * <p>
 * 类产生时间: 2014-7-8 0008 下午 14:56
 * <p>
 * 负责人: 090922(陈伟)
 * <p>
 * Email:javacspring@gmail.com
 * <p>
 * 所在组 : 掌上公安应用平台
 * <p>
 * 所在部门: 开发部--手持技术部
 * <p>
 * <p>
 */
package cn.com.oceansoft.nos.common.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import java.util.HashMap;
import java.util.LinkedHashMap;

/**
 * Description
 *
 * @author: chenw
 * @time: 2014-7-8 0008 下午 14:56
 */
public class FormData {

    private HashMap<String, String> header;
    private Object body;

    public FormData() {
        this.header = new HashMap<String, String>();
        this.body = new Object();
    }

    public FormData(String... headerParams) {
        this(null, headerParams);
    }

    public FormData(Object body, String... headPrams) {
        this.body = body;
        int _param_len = headPrams.length;
        if (_param_len > 0 && _param_len % 2 == 0) {
            this.header = new HashMap<String, String>(_param_len / 2);
            for (int i = 0; i < _param_len; ) {
                this.header.put(headPrams[i], headPrams[i + 1]);
                i += 2;
            }
        } else
            throw new RuntimeException("请求参数个数不正确！");
    }

    public HashMap<String, String> getHeader() {
        return header;
    }

    public void setHeader(HashMap<String, String> header) {
        this.header = header;
    }

    public <T> T getBody(Class<T> clazz) {
        if (null == this.body)
            return null;
        if (this.body instanceof LinkedHashMap) {
            return JSON.parseObject(JSON.toJSONString(this.body), clazz);
        } else {
            return (T) this.body;
        }
    }

    public void setBody(Object body) {
        this.body = body;
    }

    @Override
    public String toString() {
        JSONObject obj = new JSONObject(2);
        obj.put("header", this.header);
        obj.put("body", this.body);
        return obj.toJSONString();
    }
}
